﻿#region using statements

using Microsoft.Xna.Framework.Input;

#endregion

namespace NGen.Managers.Input
{
	public interface IManagerInput : IGameManager
	{
		/// <summary>
		/// 	Register an object to receive keyboard input events
		/// </summary>
		/// <param name = "p_listener">object to listen</param>
		void AddKeyboardListener(IKeyboardListener p_listener);

		/// <summary>
		/// 	Unregister an object from receiving keyboard input events
		/// </summary>
		/// <param name = "p_listener">object to stop listening</param>
		void RemoveKeyboardListener(IKeyboardListener p_listener);

		/// <summary>
		/// 	Register an object to receive mouse input events
		/// </summary>
		/// <param name = "p_listener">object to listen</param>
		void AddMouseListener(IMouseListener p_listener);

		/// <summary>
		/// 	Unregister an object from receiving mouse input events
		/// </summary>
		/// <param name = "p_listener">object to lister</param>
		void RemoveMouseListener(IMouseListener p_listener);

		/// <summary>
		/// 	Get the current state of the keyboard
		/// </summary>
		/// <returns>the keyboard state</returns>
		KeyboardState GetKeyboardState();

		/// <summary>
		/// 	Get the current state of the mouse
		/// </summary>
		/// <returns>the mouse state</returns>
		MouseState GetMouseState();
	}
}